package news

import (
	models "HeadLineNews/proto_models/manage/news_model"
	"HeadLineNews/utils"
	"github.com/gin-gonic/gin"
)

type Ctx interface {
	ParseParamAddNews(c *gin.Context) (p *models.RequestAddNews, err error)
	ParseParamUpdateNews(c *gin.Context) (p *models.RequestUpdateNews, err error)

	ParseParamListNews(c *gin.Context) (p *models.RequestListNews, err error)
}

type ctx struct {
}

func NewCtx() Ctx {
	return &ctx{}
}

// ParseParamAddNews 解析新增新闻的参数
func (ctx *ctx) ParseParamAddNews(c *gin.Context) (p *models.RequestAddNews, err error) {
	p = new(models.RequestAddNews)
	err = utils.ShouldBindProtobuf(c, p)
	return
}

// ParseParamUpdateNews 解析更新新闻的参数
func (ctx *ctx) ParseParamUpdateNews(c *gin.Context) (p *models.RequestUpdateNews, err error) {
	p = new(models.RequestUpdateNews)
	err = utils.ShouldBindProtobuf(c, p)
	return
}

// ParseParamListNews 解析搜索新闻的参数
func (ctx *ctx) ParseParamListNews(c *gin.Context) (p *models.RequestListNews, err error) {
	p = new(models.RequestListNews)
	err = utils.ShouldBindProtobuf(c, p)
	return
}